﻿using Lib.Data.Enumeration;

namespace Lib.Data.Entitys;
/// <summary>
/// 数据库连接配置实体类
/// </summary>
/// <remarks>
/// 构造函数
/// </remarks>
public class Connect(string Key = null) {
    /// <summary>
    /// 
    /// </summary>
    public static Connect Create(string Key = null) {
        return new Connect(Key);
    }
    /// <summary>
    /// 数据库类型
    /// </summary>
    public dbType dbType;
    /// <summary>
    /// 默认执行命令后数据库连接的处理方式
    /// </summary>
    public ConnectionStatus ConnectionStatus { get; set; }
    /// <summary>
    /// 数据库连接模式
    /// </summary>
    public ConnectType ConnectType { get; set; }
    /// <summary>
    /// 是否初始化
    /// </summary>
    public bool Active { get; set; }
    /// <summary>
    /// 数据库连接关键字名称 或 数据库连接字符串哈希值
    /// </summary>
    public string Key { get; set; } = Key;
    /// <summary>
    /// 数据提供程序名称(关键字)
    /// </summary>
    public string Provider { get; set; }
    /// <summary>
    /// 连接字符串
    /// </summary>
    public string ConnectionString { get; set; }


    /// <summary>
    /// 数据库服务器地址
    /// </summary>
    public string Server { get; set; }
    /// <summary>
    /// 数据库服务器地址端口号
    /// </summary>
    public int Port { get; set; }
    /// <summary>
    /// 数据库名称或文件路径
    /// </summary>
    public string DataBase { get; set; }
    /// <summary>
    /// 用户名
    /// </summary>
    public string UID { get; set; }
    /// <summary>
    /// 密码
    /// </summary>
    public string Password { get; set; }
    /// <summary>
    /// 连接字符串相关参数字符
    /// </summary>
    public string Parameters { get; set; }


    /// <summary>
    /// 获取参数名的标识字符，默认为"@"
    /// </summary>
    public string ParameterChar { get; set; }
    /// <summary>
    /// 是否记录SQL执行日志
    /// </summary>
    public bool? LogEnable { get; set; }
    /// <summary>
    /// 是否处理错误
    /// </summary>
    public bool? IsDevelopment { get; set; }
    /// <summary>
    /// SQL执行时间，超过此设定值[单位毫秒]，才需要记录日志，只有该值等于0会记录所有查询，否则只记录大于该时间的查询
    /// </summary>
    public long? RecordTime { get; set; }
    /// <summary>
    /// 记录文件后辍关键字
    /// </summary>
    public string LogKey { get; set; }
    /// <summary>
    /// 分页模式（0.Common 通用模式(支持多种类型数据库) 1.RowNumber 行号模式 2.Standard 偏移量模式）
    /// </summary>
    public string PagingKey { get; set; }

}
